<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 其实正则表达式都可以拆成一个或多个（取值范围+量词）这样的组合。针对每个组合我们根据JS正则表达式的规则翻译一遍，
    // 然后将每个组合重新拼接一下就好了。下面我们举个例子来试一下，看看这个方法行不行。


    //【1】验证QQ号的合法性[合法qq号规则：1、5-15位；2、全是数字；3、不以0开头]

    // 第一步：拆成（取值范围+量词）这样的组合
    // 根据QQ号的验证规则，我们可以拆成两个（取值范围+量词）的组合。分别是：1.（1~9的数字，1个）；2.（0~9的数字，4~14个）

    // 第二步：根据正则表达式规则翻译（取值范围+量词）
    // 1.（1~9的数字，1个）     =>   [1-9]{1}或者[1-9]
    // 2.（0~9的数字，4~14个）  =>   [0-9]{4,14}


    // 第三步：将翻译好的（取值范围+量词）组合进行拼接
    // 初学者可能在拼接这一步会犯一个错误，可能会组合拼接成这个
    // 样子/[1-9]{1}[0-9]{4,14}/或者简写翻译成/[1-9] [0-9]{4,14}/这些都不对的。
    // 调用test()方法的时候，你会发现只要一段字符串中有符合正则表达式的字符串片段都会返回true，童鞋们可以试一下。


    var reg = /[1-9][0-9]{4,14}/;
    console.log(reg.test('0589563'));
    //true，虽然有0，但是'589563'片段符合
    console.log(reg.test('168876726736788999'));
    //true,这个字符串长度超出15位，达到18位，但是有符合的字符串片段


    // 正确的写法应该是这样的：/^[1-9][0-9]{4,14}$/（用^和$指定起止位置）

    // 【2】验证国内电话号码
    // 0555-6581752、021-86128488

    // 第一步：拆成（取值范围+量词）这样的组合
    // 这里会拆成两个大组合：

    // 1、（数字0，1个）+（数字0~9，3个）+("-"，1个)+（数字1~9，1个）+（数0~9，6个）
    // 2、（数字0，1个）+（数字0~9，2个）+("-"，1个)+（数字1~9，1个）+（数0~9，7个）

    // 第二步：根据正则表达式规则翻译（取值范围+量词）
    // 1、([0-0],{1})+([0-9],{3})+"-"+([1,9],{1})+([0,9],{6})
    // 2、([0-0],{1})+([0-9],{2})+"-"+([1,9],{1})+([0,9],{7})
    // 第三步：将翻译好的（取值范围+量词）组合进行拼接
    // 这里我们先拼接一个大组合，然后再将大组合拼接起来

    // 1、0[0-9]{3}-[1-9][0-9]{6}
    // 2、0[0-9]{2}-[1-9][0-9]{7}
    // 最后拼接为：

    // /(^0[0-9]{3}-[1-9][0-9]{6}$)|(^0[0-9]{2}-[1-9][0-9]{7}$)/
</script>

</html>